面向对象Java与分数
我试图将三个实例方法添加到类“Fraction”的公共接口中,结果都返回一个“Fraction”:
加、减、乘。是否可以将其从当前代码更改为实例方法
我就是不能让它工作
这是我的密码:
class Fraction {
private Integer numerator;
private Integer denumerator;
public Fraction(Integer numerator, Integer denumerator) {
int gcd = 1;
for (int i = 1; i <= numerator && i <= denumerator; i++) {
if (numerator % i == 0 && denumerator % i == 0)
gcd = i;
}
this.numerator = numerator / gcd;
this.denumerator = denumerator / gcd;
}
public Fraction(Integer numerator) {
this.numerator = numerator;
this.denumerator = 1;
}
public String toString() {
return numerator + "/" + denumerator;
}
public static Fraction add(Fraction f1,Fraction f2){
return new Fraction(f1.numerator*f2.denumerator+f2.numerator*f1.denumerator,f1.denumerator*f2.denumerator);
}
public static Fraction subtract(Fraction f1,Fraction f2){
return new Fraction(f1.numerator*f2.denumerator-f2.numerator*f1.denumerator,f1.denumerator*f2.denumerator);
}
public static Fraction mul(Fraction f1,Fraction f2){
return new Fraction(f1.numerator*f2.numerator,f1.denumerator*f2.denumerator);
}
}
class Main
{
public static void main(String[] arguments)
{
final Fraction HALF = new Fraction(1, 2);
final Fraction THREE_FIFTH = new Fraction(3, 5);
System.out.println(HALF.add(HALF, THREE_FIFTH).toString());
System.out.println(THREE_FIFTH.subtract(HALF, THREE_FIFTH).toString());
System.out.println(HALF.mul(HALF, THREE_FIFTH).toString());
}
}
# 1 楼答案
是一个类方法(因为
static
,它不需要一个实例来调用“on”)使其成为一个实例方法
当然,您实际上不需要在那里写
this
,只是它们强调f1
成为当前对象,而f2
成为单个参数那你就可以把它当作
不重复
HALF
(就像原始代码中的HALF.add(HALF,THREE_FIFTH)
)旁注:类方法(
static
stuff)可以通过类的名称引用,您的原始代码将以Fraction.add(...)
的形式进行更常规的调用:(
System.out.println()
知道它应该调用toString()
,所以实际上您不需要自己去做)